上一篇提到敏捷的核心精神,是降低風險、盡早交付價值,以及持續改善。敏捷(Agile)其實是一個泛稱,狹義來看,它指的是一種開發精神而非具體的方法(概念層級較高),而許多經歷過時間考驗的方法框架,則是實踐了 Agile 的敏捷精神,像是 Lean、Scrum、XP 極限編程、Kanban 看板方法等等都是。Rson 此系列與敏捷相關的後續文章,則會將重點討論放在 Scrum 方法之上。
若去查字典 Scrum 是什麼意思,會查到它指的是美式橄欖球中列陣爭球的概念。在橄欖球比賽中,爭球需要搭配不同戰術,且隊員彼此之間需具有高度默契才行。
有別於過去瀑布式「一棒交一棒」的開發團隊,以 Scrum 運行的團隊和橄欖球隊一樣,從一開始就一起努力、不斷互相傳接球、互相 Cover。如同球場一樣,情況一直在變化,團隊需要隨時觀察變化並即時修改策略,一步一步向前推進,直到達陣。
圖片來源:Wiki
Scrum 是一種軟體開發的方法框架,從團隊需要哪些人、要進行哪些活動,輸入輸出物是哪些,都有比較明確的規範,所以採用 Scrum 來實踐、學習敏捷,會是很好的開始。
基於持續交付價值的核心概念,在 Scrum 中,通會會以 1 - 4 週作為一個開發週期,這個週期稱為 sprint。Sprint 的原意是衝剌的意思,顧名思義,開發團隊必須在限定的時間內(也就是在一個 sprint 中),完成所這一個週期所計劃的目標。每一個 sprint 都會產出一可運行的軟體成果(Icrement),透過這個成果,可向各種利關關係人(Stakeholder)展示,以及最重要的,發佈產品進入市場測試反應,得到市場回饋結果後,進行產品的調整,規劃下一個 sprint 所要衝剌的目標, 如此反覆循環。
Scrum 是一種輕量化的方法框架,組成要素相當簡單,只要記得三四三(三種角色、四個會議和三項產出)
接下來幾篇,我們會一一進入每個要素,進行介紹與探討。